'\" t
.\"     Title: \fBndb_size.pl\fR
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\"      Date: 11/04/2009
.\"    Manual: MySQL Database System
.\"    Source: MySQL 5.1
.\"  Language: English
.\"
.TH "\FBNDB_SIZE\&.PL\FR" "1" "11/04/2009" "MySQL 5\&.1" "MySQL Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.\" ndb_size.pl
.SH "NAME"
ndb_size.pl \- NDBCLUSTER Size Requirement Estimator
.SH "SYNOPSIS"
.HP \w'\fBndb_size\&.pl\ \fR\fB\fIarguments\fR\fR\ 'u
\fBndb_size\&.pl \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
This is a Perl script that can be used to estimate the amount of space that would be required by a MySQL database if it were converted to use the
NDBCLUSTER
storage engine\&. Unlike the other utilities discussed in this section, it does not require access to a MySQL Cluster (in fact, there is no reason for it to do so)\&. However, it does need to access the MySQL server on which the database to be tested resides\&.
.PP
\fBRequirements\fR:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
A running MySQL server\&. The server instance does not have to provide support for MySQL Cluster\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
A working installation of Perl\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
DBI
module, which can be obtained from CPAN if it is not already part of your Perl installation\&. (Many Linux and other operating system distributions provide their own packages for this library\&.)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Previous to MySQL 5\&.1\&.18,
\fBndb_size\&.pl\fR
also required the
HTML::Template
module and an associated template file
share/mysql/ndb_size\&.tmpl\&. Beginning with MySQL 5\&.1\&.18,
ndb_size\&.tmpl
is no longer needed (or included)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
A MySQL user account having the necessary privileges\&. If you do not wish to use an existing account, then creating one using
GRANT USAGE ON \fIdb_name\fR\&.*
\(em where
\fIdb_name\fR
is the name of the database to be examined \(em is sufficient for this purpose\&.
.RE
.PP
ndb_size\&.pl
can also be found in the MySQL sources in
storage/ndb/tools\&. If this file is not present in your MySQL installation, you can obtain it from the
\m[blue]\fBMySQL Forge project page\fR\m[]\&\s-2\u[1]\d\s+2\&.
.PP
The following table includes options that are specific to the MySQL Cluster program
\fBndb_size\&.pl\fR\&. Additional descriptions follow the table\&. For options common to all MySQL Cluster programs, see
Section\ \&17.4.2, \(lqOptions Common to MySQL Cluster Programs\(rq\&.
.PP
\fBUsage\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
perl ndb_size\&.pl \fIdb_name\fR|ALL] [\-\-hostname=\fIhost\fR[:\fIport\fR]] [\-\-socket=\fIsocket\fR] [\-\-user=\fIuser\fR] \e
    [\-\-password=\fIpassword\fR] [\-\-help|\-h] [\-\-format=(html|text)] [\-\-loadqueries=\fIfile_name\fR] [\-\-savequeries=\fIfile_name\fR]
.fi
.if n \{\
.RE
.\}
.PP
By default, this utility attempts to analyze all databases on the server\&. You can specify a single database using the
\fB\-\-database\fR
option; the default behavior can be made explicit by using
ALL
for the name of the database\&. You can also exclude one or more databases by using the
\fB\-\-excludedbs\fR
with a comma\-separated list of the names of the databases to be skipped\&. Similarly, you can cause specific tables to be skipped by listing their names, separated by commas, following the optional
\fB\-\-excludetables\fR
option\&. A host name (and possibly a port as well) can be specified using
\fB\-\-hostname\fR; the default is
localhost:3306\&. If necessary, you can specify a socket; the default is
/var/lib/mysql\&.sock\&. A MySQL user name and password can be specified the corresponding options shown\&. It also possible to control the format of the output using the
\fB\-\-format\fR
option; this can take either of the values
html
or
text, with
text
being the default\&. An example of the text output is shown here:
.sp
.if n \{\
.RS 4
.\}
.nf
shell> \fBndb_size\&.pl \-\-database=test \-\-socket=/tmp/mysql\&.sock\fR
ndb_size\&.pl report for database: \'test\' (1 tables)
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Connected to: DBI:mysql:host=localhost;mysql_socket=/tmp/mysql\&.sock
Including information for versions: 4\&.1, 5\&.0, 5\&.1
test\&.t1
\-\-\-\-\-\-\-
DataMemory for Columns (* means varsized DataMemory):
              Column Name                 Type  Varsized   Key       4\&.1        5\&.0        5\&.1
          HIDDEN_NDB_PKEY               bigint             PRI         8          8          8
                       c2          varchar(50)         Y              52         52         4*
                       c1              int(11)                         4          4          4
                                                                      \-\-         \-\-         \-\-
Fixed Size Columns DM/Row                                             64         64         12
   Varsize Columns DM/Row                                              0          0          4
DataMemory for Indexes:
               Index Name                 Type        4\&.1        5\&.0        5\&.1
                  PRIMARY                BTREE         16         16         16
                                                       \-\-         \-\-         \-\-
       Total Index DM/Row                              16         16         16
IndexMemory for Indexes:
               Index Name        4\&.1        5\&.0        5\&.1
                  PRIMARY         33         16         16
                                  \-\-         \-\-         \-\-
           Indexes IM/Row         33         16         16
Summary (for THIS table):
                                 4\&.1        5\&.0        5\&.1
    Fixed Overhead DM/Row         12         12         16
           NULL Bytes/Row          4          4          4
           DataMemory/Row         96         96         48  (Includes overhead, bitmap and indexes)
  Varsize Overhead DM/Row          0          0          8
   Varsize NULL Bytes/Row          0          0          4
       Avg Varside DM/Row          0          0         16
                 No\&. Rows          0          0          0
        Rows/32kb DM Page        340        340        680
Fixedsize DataMemory (KB)          0          0          0
Rows/32kb Varsize DM Page          0          0       2040
  Varsize DataMemory (KB)          0          0          0
         Rows/8kb IM Page        248        512        512
         IndexMemory (KB)          0          0          0
Parameter Minimum Requirements
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
* indicates greater than default
                Parameter          Default             4\&.1              5\&.0              5\&.1
          DataMemory (KB)            81920               0                0                0
       NoOfOrderedIndexes              128               1                1                1
               NoOfTables              128               1                1                1
         IndexMemory (KB)            18432               0                0                0
    NoOfUniqueHashIndexes               64               0                0                0
           NoOfAttributes             1000               3                3                3
             NoOfTriggers              768               5                5                5
.fi
.if n \{\
.RE
.\}
.PP
For debugging purposes, the Perl arrays containing the queries run by this script can be read from the file specified using can be saved to a file using
\fB\-\-savequeries\fR; a file containing such arrays to be read in during script execution can be specified using
\fB\-\-loadqueries\fR\&. Neither of these options has a default value\&.
.PP
To produce output in HTML format, use the
\fB\-\-format\fR
option and redirect the output to a file, as shown in this example:
.sp
.if n \{\
.RS 4
.\}
.nf
shell> \fBndb_size\&.pl \-\-database=test \-\-socket=/tmp/mysql\&.sock \-\-format=html > ndb_size\&.html\fR
.fi
.if n \{\
.RE
.\}
.sp
(Without the redirection, the output is sent to
stdout\&.) This figure shows a portion of the generated
ndb_size\&.html
output file, as viewed in a Web browser:
.sp
.RS 4
[IMAGE]\&\s-2\u[2]\d\s+2
Partial sample output from
            \fBndb_size\&.pl\fR as viewed in a Web
            browser\&.
.RE
.PP
The output from this script includes:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Minimum values for the
DataMemory,
IndexMemory,
MaxNoOfTables,
MaxNoOfAttributes,
MaxNoOfOrderedIndexes,
MaxNoOfUniqueHashIndexes, and
MaxNoOfTriggers
configuration parameters required to accommodate the tables analyzed\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Memory requirements for all of the tables, attributes, ordered indexes, and unique hash indexes defined in the database\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The
IndexMemory
and
DataMemory
required per table and table row\&.
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.PP
Prior to MySQL 5\&.1\&.23, MySQL Cluster NDB 6\&.2\&.5, and MySQL Cluster NDB 6\&.3\&.7,
ndb_size\&.pl
was invoked as shown here:
.sp
.if n \{\
.RS 4
.\}
.nf
perl ndb_size\&.pl \fIdb_name\fR \fIhostname\fR \fIusername\fR \fIpassword\fR > \fIfile_name\fR\&.html
.fi
.if n \{\
.RE
.\}
.sp
For more information about this change, see
\m[blue]\fBBug#28683\fR\m[]\&\s-2\u[3]\d\s+2
and
\m[blue]\fBBug#28253\fR\m[]\&\s-2\u[4]\d\s+2\&.
.sp .5v
.RE
.SH "COPYRIGHT"
.br
.PP
Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
.sp
.SH "NOTES"
.IP " 1." 4
MySQL Forge project page
.RS 4
\%http://forge.mysql.com/projects/project.php?id=88
.RE
.IP " 2." 4
[set $man.base.url.for.relative.links]/../refman-common/images/published/ndb-size-pl-1.png
.IP " 3." 4
Bug#28683
.RS 4
\%http://bugs.mysql.com/28683
.RE
.IP " 4." 4
Bug#28253
.RS 4
\%http://bugs.mysql.com/28253
.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
Sun Microsystems, Inc. (http://www.mysql.com/).
